Micron Document




JavaScript
part 34/42 · 71.4 KB total
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
L'opérateur d'invocation de fonction () à la fin permet l'exécution immédiate de la fonction. Les parenthèses en gras indiquent à l'analyseur syntaxique qu'elles contiennent une expression, car en JavaScript les parenthèses ne peuvent pas contenir de déclaration. Autrement, dans la plupart des situations, le mot clé function est traité comme une déclaration de fonction, et pas comme une expression de fonction. Il existe d'autres façons pour forcer une expression de fonction :

!function (…) { … }(…);
~function (…) { … }(…);
-function (…) { … }(…);
+function (…) { … }(…);

Dans les contextes où une expression est attendue il n'est pas nécessaire d'utiliser les parenthèses en gras :

var maVariable = function (…) { … }(…);
true && function (…) { … }(…);
0, function (…) { … }(…);

Une utilisation importante des expressions de fonctions immédiatement invoquées est pour la création de modules. Les modules permettent à la fois de rassembler des propriétés et des méthodes dans un espace de nom et de rendre certains membres privés :

var compteur = (function () {
var i = 0; // propriété privée
return { // méthodes publiques
obtenir: function () {
alert(i);
},
mettre: function (valeur) {
i = valeur;
},
incrementer: function () {
alert(++i);
}
};
})(); // module
compteur.obtenir(); // affiche 0
compteur.mettre(6);
compteur.incrementer(); // affiche 7
compteur.incrementer(); // affiche 8
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────